1. Technical Field
The present invention relates generally to computer systems and in particular to distributed storage systems. Still more particularly, the present invention relates to a method and system for dynamically configuring distributed storage systems.
2. Description of the Related Art
Over the last several years, significant changes have occurred in how persistent storage devices are attached to computer systems. With the introduction of Storage Area Network (SAN) and Network Attached Storage (NAS) technologies, storage devices have evolved from locally attached, low capability, passive devices to remotely attached, high capability (intelligent), active devices that are capable of deploying vast file systems and file sets. The remotely-attached intelligent storage devices are referred to herein as “storage servers,” while the computer system to which they are attached are referred to as “hosts.” These devices are interconnected via a network interface and collectively referred to as distributed storage systems.
One complication present within a distributed storage environment is that applications which execute on the host, particularly databases and file systems, are not cognizant of the type of storage that they are utilizing. Hosts typically have multiple storage connections. For example, a single host may be connected to one or more storage servers and one or more locally-attached disk drives. Then, a system administrator on the host creates virtual storage pools from among these storage connections. The administrator may create one pool comprising storage from a locally attached disk and storage from one of the storage servers, another pool comprising storage from a different locally attached disk, and yet another pool comprising two distributed storage servers. The administrator then assigns applications to the respective storage pools.
One problem with this approach is that, in order to complete the assignment in an optimal manner, the administrator has to match the storage utilization characteristics of the application with the characteristics of the pool. To complete this match, certain configuration information on the various storage pools needs to be obtained. However, with conventional implementations, the configuration information is generally not obtainable for even a single storage connection, and even more unavailable for a virtualized storage pool.